<?php 
/**
 * 根据卡号获取所属银行
 */
function bankInfo($card) {  
    $bankList = json_decode(file_get_contents('../app/Common/json/BankName.json'),true);
    $card_8 = substr($card, 0, 8);  
    if (isset($bankList[$card_8])) {  
        return $bankList[$card_8];
    }  
    $card_6 = substr($card, 0, 6);  
    if (isset($bankList[$card_6])) {  
        return $bankList[$card_6];
    }  
    $card_5 = substr($card, 0, 5);  
    if (isset($bankList[$card_5])) {  
        return $bankList[$card_5];
    }  
    $card_4 = substr($card, 0, 4);  
    if (isset($bankList[$card_4])) {  
        return $bankList[$card_4];
    }
    // $url = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?cardNo={$card}&cardBinCheck=true";
    // $data = json_decode(curl_get($url));
}

/**
 * Fun convertGCJ02ToBD09 中国正常GCJ02坐标---->百度地图BD09坐标
 *
 * @param double $lat 纬度
 * @param double $lng 经度
 *
 * @return array
 */
function convertGCJ02ToBD09($lat, $lng)
{
    $xPi   = 3.14159265358979324 * 3000.0 / 180.0;
    $x     = $lng;
    $y     = $lat;
    $z     = sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $xPi);
    $theta = atan2($y, $x) + 0.000003 * cos($x * $xPi);
    $lng   = $z * cos($theta) + 0.0065;
    $lat   = $z * sin($theta) + 0.006;

    $arr = [];
    $arr['lng'] = $lng;
    $arr['lat'] = $lat;
    
    return $arr;
}

/**
 * Fun convertBD09ToGCJ02 百度地图BD09坐标---->中国正常GCJ02坐标
 *
 * @param double $lat 纬度
 * @param double $lng 经度
 *
 * @return array
 */
function convertBD09ToGCJ02($lat, $lng)
{
    $xPi   = 3.14159265358979324 * 3000.0 / 180.0;
    $x     = $lng - 0.0065;
    $y     = $lat - 0.006;
    $z     = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $xPi);
    $theta = atan2($y, $x) - 0.000003 * cos($x * $xPi);
    $lng   = $z * cos($theta);
    $lat   = $z * sin($theta);

    $arr = [];
    $arr['lng'] = $lng;
    $arr['lat'] = $lat;
    
    return $arr;
}

/**
 * 推送信息
 */
function Jpush($id,$user_id,$alert) {
    $jpush = new JPush\Client(config('app.jpush_key'),config('app.jpush_secret'));
    $ios_notification = array(
        'sound' => '嘉时乐享',
        'badge' => 2,
        'content-available' => true,
        'mutable-content'=>true,
        'category' => '提醒',
        'extras' => array(
            'key' => 'value',
            'jiguang'
        ),
    );
    $android_notification = array(
        'title' => '嘉时乐享',
        'builder_id' => 2,
        'extras' => array(
            'key' => 'value',
            'jiguang'
        ),
    );
    $user = new App\Models\User;
    $userdata = $user->where('user_id',$user_id)->select('mobile_id')->first();
    try {
        $res = $jpush->push()
        ->setPlatform(['ios','android'])
        ->setNotificationAlert('嘉时乐享')
        ->addRegistrationId($userdata['mobile_id'])
        ->iosNotification($alert, $ios_notification)
        ->androidNotification($alert, $android_notification)
        ->send();
        return $res;
    } catch (Exception $e) {
        return false;
    }
}


/**
 * curl GET
 */
function curl_get($url)
{
    //初始化
    $curl = curl_init();
    //设置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //设置头文件的信息作为数据流输出
    // curl_setopt($curl, CURLOPT_HEADER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    //设置获取的信息以文件流的形式返回，而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //执行命令
    $data = curl_exec($curl);
    //关闭URL请求
    curl_close($curl);
    //显示获得的数据
    return $data;
}

/**
 * curl POST
 */
function curl_post($url,$post_data)
{
    //初始化
    $curl = curl_init();
    //设置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //设置头文件的信息作为数据流输出
    // curl_setopt($curl, CURLOPT_HEADER, 1);
    //设置获取的信息以文件流的形式返回，而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //设置post方式提交
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    //执行命令
    $data = curl_exec($curl);
    //关闭URL请求
    curl_close($curl);
    //显示获得的数据
    return $data;
}

/**
 * 根据经纬度算距离，返回结果单位是公里，先纬度，后经度
 * @param $lat1
 * @param $lng1
 * @param $lat2
 * @param $lng2
 * @return float|int
 */
function get_distance($lat1, $lng1, $lat2, $lng2,$num=false)
{
    $EARTH_RADIUS = 6378137;   //地球半径
    $RAD = pi() / 180.0;

    $radLat1 = $lat1 * $RAD;
    $radLat2 = $lat2 * $RAD;
    $a = $radLat1 - $radLat2;    // 两点纬度差
    $b = ($lng1 - $lng2) * $RAD;  // 两点经度差
    $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
    $s = $s * $EARTH_RADIUS;
    $s = round($s * 10000) / 10000;
    if($num){
        return round($s,2);
    }
    if($s>1000){
        return round(($s/1000),2).'千米';
    }
    return round($s,2).'米';
}

function rad($d)
{
    return $d * M_PI / 180.0;
}


/**
 * 随机字符串
 */
function createNonceStr($length = 16) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $str = "";
    for ($i = 0; $i < $length; $i++) {
     $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    return $str;
}

/**
 *  合并图片
 */
/*function merge_img($logo,$background){
    // 准备好的logo图片
    // $logo = 'https://jiashilexiang.oss-cn-beijing.aliyuncs.com/Wechat//20200401/a362a3f5b42eb2613b7350df15ea0219.png';
    $filename = $logo;
    // 准备好的背景图片
    $back = $background;
    $back_res = imagecreatefromjpeg($back);
    // $QR = imagecreatefrompng($filename);
    $logo = imagecreatefromjpeg($logo);
    // 背景图片宽度
    $back_width = imagesx($back_res);
    // 背景图片宽度
    $back_height = imagesy($back_res);
    // logo图片宽度
    $logo_width = imagesx($logo);
    // logo图片高度
    $logo_height = imagesy($logo);
    // 背景图
    $qr_back_width = $back_width / 3;
    $scale_back = $logo_width/$qr_back_width;
    $qr_back_height = $logo_height/$scale_back;
    $from_back_width = ($back_width - $qr_back_width) / 2;

    // 重新组合图片并调整大小
    imagecopyresampled($back_res, $logo, $from_back_width-260, $from_back_width+180, 0, 0, $qr_back_width+12, $qr_back_height+73, $logo_width, $logo_height);
    // 保存图片
    imagejpeg($back_res,$filename,100);
    // header("Content-type:image/png");
    // imagepng($back_res);
    if(file_exists($filename)){
      chmod($filename, 0777);
      $resimg = $this->makeImg($filename,$name);
      return $filename;
    }else{
      return false;
    }
}*/

/**
 *  合并图片
 */
function merge_img($logo,$background,$info){
    // 准备好的logo图片
    // $logo = 'https://jiashilexiang.oss-cn-beijing.aliyuncs.com/Wechat//20200401/a362a3f5b42eb2613b7350df15ea0219.png';
    $filename = $logo;
    // 准备好的背景图片
    $back = $background;
    $back_res = imagecreatefromjpeg($back);
    $logo = imagecreatefromjpeg($logo);
    // 背景图片宽度
    $back_width = imagesx($back_res);
    // 背景图片宽度
    $back_height = imagesy($back_res);
    // logo图片宽度
    $logo_width = imagesx($logo);
    // logo图片高度
    $logo_height = imagesy($logo);

    // 头像图片宽度
    // $avatar_width = imagesx($avatar);
    // 头像图片高度
    // $avatar_height = imagesy($avatar);

    // 背景图
    $qr_back_width = $back_width / 3;
    $scale_back = $logo_width/$qr_back_width;
    $qr_back_height = $logo_height/$scale_back;
    $from_back_width = ($back_width - $qr_back_width) / 2;

    // 背景图+头像
    // $scale_back_avatar = $avatar_width/$qr_back_width;
    // $avatar_back_height = $avatar_height/$scale_back_avatar;

    // 重新组合图片并调整大小
    imagecopyresampled($back_res, $logo, $from_back_width+275, $from_back_width+951, 0, 0, $qr_back_width-67, $qr_back_height-72, $logo_width, $logo_height);
    //打上文字
    $font = base_path('resources/fonts/').'simsun.ttf';//字体
    $t_color = imagecolorallocatealpha($back_res, 0, 0, 0, 50);//最后一个参数值越大越透明
    $info->nicename = mb_substr($info->nicename, 0,5);
    imagefttext($back_res, 30, 0, 110, 1298, $t_color, $font, 'Hi~我是：'.$info->nicename);
    imagefttext($back_res, 30, 0, 110, 1298, $t_color, $font, 'Hi~我是：'.$info->nicename);
    imagefttext($back_res, 30, 0, 110, 1298, $t_color, $font, 'Hi~我是：'.$info->nicename);
    imagefttext($back_res, 30, 0, 110, 1370, $t_color, $font, '心动惊喜，为你而来');
    imagefttext($back_res, 30, 0, 110, 1370, $t_color, $font, '心动惊喜，为你而来');
    imagefttext($back_res, 30, 0, 110, 1370, $t_color, $font, '心动惊喜，为你而来');
    // $avatar = yuanjiao($avatar);
    // imagecopyresampled($back_res, $avatar, $from_back_width, $from_back_width, 0, 0, $qr_back_width-900, $avatar_back_height-900, $avatar_width, $avatar_height);
    $savefile = base_path('resources/tmp/').md5(uniqid(microtime(true),true)).'.jpeg';
    // 保存图片
    imagejpeg($back_res,$savefile,80);
    // header("Content-type:image/jpeg");
    // imagejpeg($back_res);
    return $savefile;
}

/**
 * 将图片切成圆图片（实际是一个正方形的透明图片）
 * @author www.youhutong.com  xiaochuan 28126649@qq.com
 * @param object $imgobj 图片对像
 * @param int $diameter 指定圆直径（不传就按可取最大圆取）
 * @return object
 */
function yuanjiao($imgobj, $diameter=false){
    if($diameter!==false){
        $xc_img = imagecreatetruecolor($diameter, $diameter);
        $xc_w = imagesx($imgobj);
        $xc_h = imagesy($imgobj);
        imagecopyresampled($xc_img, $imgobj,0, 0, 0, 0, $diameter, $diameter, $xc_w, $xc_h);
        $imgobj = $xc_img;
    }
    #  获取原图宽高
    $w   = imagesx($imgobj);
    $h   = imagesy($imgobj);
    #  计算出圆最大直径（得出需要创建的正方形大小）
    $w   = min($w, $h);
    $h   = $w;
    $img = imagecreatetruecolor($w, $h);
    #  设置保存PNG时保留透明通道信息（这一句一定要有，不然后面填充不了透明色）
    imagesavealpha($img, true);
    #  为一个图像分配颜色和透明度，最后一个参数127为全透明
    $bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
    #  填充图像
    imagefill($img, 0, 0, $bg);
 
    #  算出圆半径，开始一个一个像素复制图片
    $r   = $w / 2;
    for ($x = 0; $x < $w; $x++) {
        for ($y = 0; $y < $h; $y++) {
            $rgbColor = imagecolorat($imgobj, $x, $y);
            if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) {
                imagesetpixel($img, $x, $y, $rgbColor);
            }
        }
    }
    return $img;
}

/**
 * 权限判断
 */
function power_if($power=false)
{
    
    if(is_array($power)){
        if(session('power') == '*'){

        }else if(count(array_intersect($power,json_decode(session('power'),true))) <= 0){
            return 'hide';
        }
    }else{
        if(session('power') == '*'){
            
        }else if(!in_array($power, json_decode(session('power'),true))){
            return 'hide';
        }
    }
}

/**
 * 将xml转为array
 * @param string $xml
 * return array
 */
function xml_to_array($xml){
    if(!$xml){
        return false;
    }
    //将XML转为array
    //禁止引用外部xml实体
    libxml_disable_entity_loader(true);
    $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
    return $data;
}

/**
 * 格式化数字
 */
function float_number(int $number){
    $length = strlen($number);  //数字长度
    if($length > 8){ //亿单位
        $str = substr_replace(strstr($number,substr($number,-7),' '),'.',-1,0)."亿";
    }elseif($length >4){ //万单位
        //截取前俩为
        $str = substr_replace(strstr($number,substr($number,-3),' '),'.',-1,0)."万";
    }else{
        return $number;
    }
    return $str;
}